package helpers;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.Date;
import java.util.regex.Pattern;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class TranslateHelper {

	public static String keyword(String str, String remove) {
		String string = "";
		str = str.replaceAll("[ ]*[.]+[ ]*", "daucham");
		str = str.replaceAll("[\\W]+", "-");
		str = str.replaceAll("daucham", " .");
		String[] words = str.split("-");
		int count = 0;
		String check = "";
		String[] check_arr = new String[5];
		String s_word = "";
		String s_check = "";
		for (int i = 0; i < (words.length - 1); i++) {
			if (Pattern.matches("^[A-Z]+[\\w\\W]+", words[i]) && count <= 4 && words[i].length() > 4 && i != 0 && !remove.equals(words[i])) {
				check = "";
				s_word = words[i].toLowerCase();
				for (int j = 0; j < check_arr.length; j++) {
					if (check_arr[j] != null)
						s_check = check_arr[j].toLowerCase();
					if (s_word.equals(s_check)) {
						check = "1";
					}
				}
				if (check.equals("")) {
					if (count == 0) {
						if (words[i + 1] != null && words[i + 1].length() > 5 && Pattern.matches("^[^.]+[\\w\\W]+", words[i]))
							string += words[i].replaceAll("[ .]+", " ") + " " + words[i + 1].replaceAll("[ .]+", " ");
						else
							string += words[i].replaceAll("[ .]+", " ");
					} else {
						if (words[i + 1] != null && words[i + 1].length() > 5 && Pattern.matches("^[^.]+[\\w\\W]+", words[i]))
							string += "," + words[i].replaceAll("[ .]+", " ") + " " + words[i + 1].replaceAll("[ .]+", " ");
						else
							string += "," + words[i].replaceAll("[ .]+", " ");
					}
					check_arr[count] = words[i];
					count++;
				}
			}
			if (count >= 4) {
				break;
			}
		}

		return string;
	}

	public static int time() {
		int time = 0;
		Date date = new Date();

		time = (date.getYear() - 2011) * 365 * 24 * 60 * 60 + (date.getMonth() - 1) * 30 * 24 * 60 * 60 + (date.getDay() - 1) * 24 * 60 * 60 + date.getHours() * 60 + date.getSeconds();

		return time;
	}
	
	public static String translate(String string, String language, String trans) throws IOException {
		string = URLEncoder.encode(string.replaceAll("[\\']{1}", "\\\'").replaceAll("[\\\"]{1}", "\\\""), "UTF-8");
		URL url = new URL("http://translate.google.com/?hl=en&tab=TT");
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		connection.setDoOutput(true);
		connection.setRequestMethod("POST");
		connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.21) Gecko/20110830 AlexaToolbar/alxf-2.14 AlexaToolbar/pXVUnvuf-1.2 Firefox/3.6.21");
		connection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
		connection.setRequestProperty("Accept-Language", "en-us,en;q=0.5");
		connection.setRequestProperty("Accept-Charset", "       ISO-8859-1,utf-8;q=0.7,*;q=0.7");
		connection.setRequestProperty("Connection", "keep-alive");
		connection.setRequestProperty("Keep-Alive", "115");
		connection
				.setRequestProperty(
						"Cookie",
						"PREF=ID=987bb7a56b1cc7bc:U=691fa246d56f502e:FF=0:TM=1314876638:LM=1314876681:S=yBXzqp_WQq9ykX-j; NID=50=nfNXg7ymSSsfdzMnkEuo7t1GCgIEwcK5xmpFhu1mQWwvNI5nFHLZpRsy_1XnaoKrdj9hnz7za9-M2OIO99phfFSTmXln-xCvqzJaRWHsN0EQKgpmkvgUDTWPVF4I4c9L; SID=DQAAALcAAADhqr-J8Ls3CKhmbRjwTMMP1DjmIvR8qBFxv99saTaFFgoRsVf18W4p_BTocYoxYNMvsvh9sfjMj7KqLyd_s9Y0lwYY_Rrljd7t5IpKBTWWnsv9VSJ_qelH943zV8YIT3uuIdJbHhFlCnVEu_YealZoldWjf4VirYR0PIrr0i4_JU2JCHRmpyW0ACt3KcyLkukJlGDyT5yC5js3CBSTAhnWSylBpMWPWyWJzqXe2BQFcdfuU_qo00pAR-uEcMQ437M; HSID=A9Z-j3CKhzDEykAES");
		connection.setRequestProperty("Cache-Control", "max-age=0");
		OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
		writer.write("text=" + string);
		writer.write("&eotf=1");
		writer.write("&hl=vi");
		writer.write("&ie=UTF-8");
		writer.write("&js=n");
		writer.write("&layout=2");
		writer.write("&prev=_t");
		writer.write("&sl="+language);
		writer.write("&tl="+trans);
		writer.close();
		if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
			String content = "";
			BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("UTF-8")));
			while (1 == 1) {
				String str = reader.readLine();
				if (str == null)
					break;
				content += str;
			}
			Document doc = Jsoup.parse(content);
			string = doc.select("#result_box").text().replaceAll("<[ ]*/[ ]+", "</");
		}
		return string;
	}
	
	public static void main(String[] args) {
		String str = "hello the world";
		try {
			System.out.println(translate(str, "en", "vi"));
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}